#include <iostream>
#include <unordered_set>
#include <vector>
using namespace std;
unordered_set<int> S;
int sum = 0;
vector<vector<int>> a;
vector<int> temp;
int n;
const int N = 50;
int C[N][N];
void init() 
{
    for(int i = 0; i < N; i++) {
        C[i][0] = C[i][i] = 1;
        for(int j = 1; j < i; j++) {
            C[i][j] = C[i - 1][j - 1] + C[i - 1][j];
        }
    }
}
void dfs(int x) {
    if(sum == n) {
        a.push_back(temp);
        return;
    }
    if(sum > n || x == 0) {
        return;
    }
    for(int i = x; i >= 1; i--) {
        sum += i;
        temp.push_back(i);
        dfs(i);
        sum -= i;
        temp.pop_back();
    }
}
int main() {
    cin >> n;
    dfs(n);
    init();
    int ans = C[n][2];
    for(auto& s : a) 
    {
        int temp = 0;
        for(auto& k : s) {
            temp += C[k][2];
        }
        S.insert(ans - temp);
    }
    cout << S.size() << endl;
    return 0;
}